package com.bnz.interceptor;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.persistence.Id;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * 登录拦截器
 */

@Component // 将此拦截器放进spring容器之中
public class LoginInterceptor implements HandlerInterceptor {

    /** 1、执行登录方法前，会先执行此拦截器方法
     * 判断用户之前是否登录果，就在session中存在用户数据
    */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 1.1、判断session是否有值
        // 1.1.1、得到session
        HttpSession session = request.getSession();
        // 1.1.2、从session中拿取用户名("username" 是登录功能存的key)
        String username = (String) session.getAttribute("username");
        // 1.1.3、判断username是都有值，确定以前是否登录过
        if (null == username){
            // 没有登录，返回登录界面
            // sendRedirect()函数的作用是重定向网页，向浏览器发送一个特殊的Header，然后由浏览器来做重定向，转到指定的页面
            response.sendRedirect("/login.jsp");
            return false; // 拦截器不放行
        }
        return true;
    }
}
